1. Field of the Invention
The present invention relates generally to accessing texture objects and image objects in GPU memory and, more specifically, to a bindless texture and image application programming interface (API) for OpenGL®.
2. Description of the Related Art
OpenGL® treats graphics concepts like textures, vertex buffers, shaders, constant buffers, and the like as opaque “objects” without exposing, to an application that references the objects, address details of the objects within a memory. Typically, the application binds such objects together and into a fixed set of hardware “units,” e.g., texture units, vertex streams, constant buffer slots, or the like, through, e.g., API calls, without ever being aware of or having access to a physical address of the objects within the memory. Between the execution of graphics commands, e.g., Draw( ) commands, application programs frequently require access to different objects. In turn, the API is required to bind such new objects to the set of hardware units, which is costly. For example, significant processing overhead is introduced by requiring a driver to iterate a plurality of pointers per object to validate that the objects are properly located within the memory. As a result, a substantial bottleneck has developed in modern 3D graphics processing.
As the foregoing illustrates, what is needed in the art is a mechanism for accessing data objects without causing a graphics driver bottleneck.